Unless otherwise indicated herein, the materials described in this section are not prior art to the claims and are not admitted to be prior art by inclusion in this section.
With advances in networking and computing technology, it is now commonplace for client devices to receive and play out video being streamed in real time from a network server. In practice, for instance, a client may be programmed or otherwise arranged with a media player that provides a user interface at which the client can receive a user request for streaming playout of particular video. The media player may then cause the client to interact with a server according to an agreed protocol (such as the Hypertext Transfer Protocol (HTTP), the Real Time Streaming Protocol (RTSP), the Real-time Transport Protocol (RTP), the Real Time Control Protocol (RTCP), and the Real Time Messaging Protocol (RTMP)), to request the server to stream the particular media. As the client receives the video streamed in response from the server, the client may then play out the video at the user interface for the user's enjoyment.
To facilitate streaming of video over a network for playout at a requesting client, the video may be digitized and encoded using a particular coder-decoder (codec) so as to produce an encoded bit stream, and the server may divide the encoded bit stream into sequence of blocks and encapsulate each block with a numbered header such as an RTP header for instance. The server may then transmit the sequence of encapsulated blocks to the client using a network protocol such as the Internet Protocol (IP) for instance. As the client receives the encapsulated blocks of the encoded bit stream, the client may then combine the blocks into their original encoded bit stream and buffer the bit stream in data storage. From the buffer, the client may then use the codec to decode the bit stream and may play out the resulting original video at the user interface.
In practice, the media player may enable the user to request playout of the video in a fast-forward mode, i.e., at a fast-forward speed that is some multiple of its normal playout speed. To facilitate such fast-forward playout when requested, the server may stream to the client a special “trick-play track” of the video that the client can play at the requested fast-forward speed.
The trick-play track may be a sparser version of the original video, having fewer frames so that the trick-play track can be more quickly transmitted for playout at the client. For instance, if the original video contains I-frames, P-frames, and B-frames, each with particular timestamps indicating their time locations in the video, the trick-play track may contain just the I-frames with their original timestamps. Thus, if the client receives the trick-play track streamed from the server and plays out the I-frames at their indicated times, the result may be effectively a slide-show rendition of the original video, lacking the smooth video transitions from one I-frame to the next. However, the client can conveniently speed up playout of such a trick-play track to the requested fast-forward speed, so as to provide the requested fast-forward playout. For instance, if I-frames normally occur in the original video at a rate of one per second, and if the requested fast-forward speed is 2×, the client may play out the sequence of I-frames at a rate of two per second (i.e., one per half second). Similarly, if the fast-forward speed is 4×, the client may play out the sequence of I-frames at a rate of four per second (i.e., one per quarter second).
A similar process can be applied for fast-reverse playout of video. In particular, the server may stream to the client a trick-play track that contains the I-frames of the video in reverse order, with correspondingly adjusted timestamps. As the client would receive such a trick-play track streamed from the server, the client may play out the I-frames at their indicated timestamps and provide effectively a reverse-order slide-show rendition of the video. And again, the client could speed up playout of such a trick-play track to the requested fast-reverse speed, so as to provide the requested fast-reverse playout.